{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "a585cd20",
   "metadata": {},
   "source": [
    "黑天鹅事件,造成股价大幅下跌,我们统计第2天的涨幅情况"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "dba1d31b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "总次数: 815\n",
      "涨幅大于零的次数: 480，概率: 0.5890\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA9wAAAJOCAYAAABFiQ/hAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/GU6VOAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB/o0lEQVR4nOzde3zP9f//8ft77/eO2JEcZmkOKeVQmkahg1I5RBLiWx8lKZL0WUUp9dHQQeUTlchK0UEf6SQdUKmVthZmo/jM2QrN3pvZe2zP3x8+e/+87WDY672D2/VyeV/qdXi+no/X3u+31+v+fp1sxhgjAAAAAABQqXyqugAAAAAAAGojAjcAAAAAABYgcAMAAAAAYAECNwAAAAAAFiBwAwAAAABgAQI3AAAAAAAWIHADAAAAAGABAjcAAAAAABYgcANALTRlyhTNnDmzyvrft2/fCefJy8uT0+ms8DK//vprLV++/HTK8pCVlaVRo0Zp9erVlbbME/noo48qdR1quh9//FG33HKLfvrpp1KnL1q0SIsWLVJ+fr6XKzuxinzGCwoKdODAARUVFVVomevXr9fbb79d4flPx59//qmdO3ee1jLWr18vY0wlVQQAtZPN8C8lANRY6enpkqTzzz/fY3zTpk119tln68cff/QY/+mnnyogIEA9evQosaxvv/1WX331lfz8/OTjU/7vsUVFRXK5XKpTp44mTpzoMe3jjz/WnXfeqf/85z/q2rWr/vvf/+rAgQMKCAiQj4+P/Pz81Lx5c911111avny5tm/fLkk6fPiw7HZ7mX1ff/31crlcWrFihXvc/Pnzy22Tn58vPz8/3XbbbSWmZWZmqnHjxkpISNDtt98uSdq1a5eefPJJd63Ha9asmR544AGPv8P06dN1/vnnq1+/fuX+zSSpZcuWql+/fpkB80wzYMAA/fzzz1q1apVatmwp6ejn4PDhwwoMDNR5552nw4cPa8WKFapbt64k6ciRIyosLFRkZOQp9Tl79myNHj36pNps27ZNZ599tnt4586dateunZ566imNGTNG+/bt09atWxUQECCHwyHp6Hv93nvvadiwYdqyZYuaN28uSXK5XPL39y+1n+nTp2vixIkqLCx0j/viiy/0559/ym63l9rm8OHDOnTokP7v//5P9erVK3WeDz/8UP/+97/18ssv68ILL5TL5VLTpk3Vo0cPLVq06KT+FsUOHDigBg0a6KKLLlJiYmKZ9QHAmc5R1QUAAE7Nnj17FBsbq4iICP38889q0KCBe1pAQIB8fX095v/rr780fPhwZWdnKzU1Veeee67H9OTkZL3wwgvy8/Pz2HnOy8vToUOHFBER4R5XWFgol8ulxo0blwjcderUkd1uV48ePfTqq6/q559/1muvveaefv755ystLU2BgYEKDAx0j//ggw/0xBNPaOXKlWratGmJ9Q0KCioRghcuXChJpe7sG2OUn5+v8PBwd+A2xig3N1eBgYEKCAiQJPn5+Sk/P18FBQUqLCzUvn37FBAQoCVLlujss89W586dJUmffPKJOnbs6BG4d+/erZdeekn5+fn67bffdM4555So41ihoaHy8/Mrd56aZMeOHYqKijqltj/++KP+85//SJJatWrlMW3AgAH6xz/+od9//12SFB0d7TG9RYsW2rx58yn1W/xZefPNN9WpU6dy550wYYI++ugjd4guduTIEbVo0UL33XefUlNT1bVrVw0bNsxjnj///NP9+S7+786dO9W+fXu9/fbbuv7660v0FxQU5P5cFvvmm2/066+/lvg+FysoKNChQ4fUv3//UgO3MUZTpkzR1q1b1ahRI0mSv7+/xo0bp0mTJum+++5Tly5dyv07lOaDDz7QkSNHNHLkSMI2AJTHAABqrBdffNFIMpdddpk5fPiwe3zr1q1N9+7d3cNHjhwxvXr1MpLMq6++elJ9PProo0aSx/JPJDMz0/Ts2dPMmjXL5OXlmfz8fFNUVGTuv/9+06FDB2OMMQ8++KC54IIL3G26du1qYmNjPZazfft2M3XqVDN16lRz4YUXmvPOO889nJSUdFLrYYwxe/bsMZJKfTVs2NA936FDh4yPj4957rnn3OPOO+88M3jw4BLLXLFihbHZbKZr166msLDQ5OXlGZfLZYqKikrMGxsba7p3724KCwtNfn6+OXjw4EmvQ7GDBw+aSy65xDzxxBOnvAxjjNm2bZsZOHCgCQ8PN/Xr1zcTJkwwR44ccU8vKCgwt956qwkODjbjx493jz98+LDp06fPKfWZk5NjWrdubQYOHGjS09NN165dTatWrUx6erpJT083W7duNRdccIHp3r272bt3rxk5cqQJCAgw69atM7t27TLbtm3zWN5rr71mzjvvPOPr62vq1KljbrzxRrN9+/ZS+547d66RZFauXHnCOm+//XYjyfz5558lphUUFJgHH3zQDBo0yLhcLpOXl2eOHDlilixZYiSZAwcOmE8++cRIMnv37jXGGDNp0iRTt25d93CxadOmmalTp5q+ffsaPz8/92f8P//5TwX/omX76KOPjCQzdepUj/F5eXnm7LPPNq1atTLZ2dlltv/555/N2rVrzYYNG9zvT3p6ujnvvPNMWFiYWbduncf44teGDRvMunXrzJo1a0x+fv5prwcA1FQEbgCo4W677TYjyTzwwAPucccH7pEjRxpJ5r777jvp5Z9K4DbGlBo477//ftOpUydjjGfg/uWXX4wk8/nnn3vMn5iYaCSZW2+91TRv3tycffbZ5u677zahoaFmzpw5xhhjevToUWaInjZtmsfyDh06ZD788EPz+eefm6VLlxpJ5rHHHjMff/yx+eSTT9zzFYeUH3/80T2uadOmZtSoUaWu63333WfOPfdcs3XrVjN69Ogy6zn+NXTo0JP6mxZzuVymX79+RtJpBe6//vrLNGvWzAQGBprHHnvMPPnkkyYwMNA8/PDD7nmWLFligoKCzLRp04wk89tvvxljjFm4cKF56623Tqn2Xr16mYiICHeQ/fTTT40k88UXXxhjjBk3bpyx2Wzmhx9+MMYYs2PHDuPv71/q3//55583kkzPnj3NK6+8Yv75z38ah8NhWrVqVWrQmz9//kkH7v3795c5z/Gf8+LAnZeX5xG48/LyTIMGDcxDDz1UYhn+/v7miiuuMJdffrlxOBzm7rvvNm3atDG33nqrMcaYKVOmlPkZuu6668qs7cCBAyYqKso0a9bMHDp0qMT0ZcuWGUnm+uuvNwUFBSWmHz58uMKf5fJeGRkZZdYIALUdp5QDQA03c+ZMbdy4UVdddVWp04uKilS3bl3dcMMNeuGFFyyvJz09Xa1bt3af/p2dna09e/ZIOnqjMpfLVaJNfHy8OnbsWOI02+LTr59++mn985//VH5+vl599VWtWrXKfYptnTp1NHbsWD399NMebbt06VLi9NyAgADddNNNkqTc3FxJUvv27dWnTx/3PEVFRXrmmWd03nnnuU8nl6ScnByFhISUus7Tpk3Ts88+K39/f40fP1533HGHgoKCSsw3dOhQ2e12JSQk6MiRI+7rkk9GZmambrrpJu3YseOk2x5v8uTJ2rZtmz7//HP3375x48a65557dPfddys6OlobN25U27Zt9fDDD+uFF17Qxo0b1b59e7333nv64IMPTrrPxYsX66uvvtJLL72knTt3at++fWrevLnuvPNO1alTRxs3blT37t0lSeHh4dq4caMk6cEHH9Qll1wiY4xsNpukozcumzRpksaOHauXXnrJ3UdQUJCeeuopffXVV+rdu7dH/6dy+vPxlzLs2LFDISEhCg4Ols1m0+HDh7VlyxZJR+8DIKnE5/z1119Xbm6uHnzwwRLL9/Pz0+23367c3FylpKTo1Vdf1ahRo9w3i6tTp44uuugifffddx7tHn74Ye3evbvMuseMGaMdO3boP//5T4nvgiRdd911iouL07PPPqubbrpJixYt8vhMOhwOHThwQIGBgbLb7bLb7dqzZ48uvPBCxcTEaNmyZUpKStL06dP11FNPqU2bNuX9GQHgjETgBoAaKjc3VzabTXXq1NHPP/9c5nw+Pj56/vnnVVhYWGbY2LJliwoLC+Xr6+sOM8Wys7MlHb1x1PHti4qKVFBQoLCwMDVs2NB9XXnz5s01c+ZMde3aVf/5z390xx13uNu0bt3aYxlr1qzRkiVL9Nlnn5Va+4kUFRUpJyenxB2XDx8+XOIOyjt37lRWVpb7um3p6LXwGzZsUEFBgZo2bapnnnlGP/74oxYtWuS+pvuHH35Qdna2+8Zexzs2XBffHKs0gYGBcjgcpxVMXnvtNdlsNv3000+lXuteUcYYffDBB7rooos8fui4/fbb9eCDD2rJkiUaP368jhw54v5xw+Fw6MiRI1q1apW6dOlS5nXF5bn11lt17bXX6rXXXtNll12mgIAA9+fqo48+UkFBgXJychQWFqYFCxa42+Xl5Sk/P9/jhmI5OTmaOHGi7r//fo8+OnToIOnojxPHO/7zXRHHfg6NMRowYIC2b9+u+Ph4DR8+XDt37ixx48Jj76yem5urp59+WmPGjNFZZ51V7vJLU/w9O/4znpubW+ZdwufOnau3335bd9xxh/r371/msqdPn66cnBy9+uqriomJ0VtvvaWYmBj39GN/ZDLG6M4775Tdbtf8+fNls9mUlZWlDz/8UA899FC56wAAZyoCNwDUUIMHDy41pBbbtGlTmeFi06ZNHjdNu/POO/Xtt9+W219ZYVOS/vWvf+mxxx5T48aN9corr+jBBx/UVVddpc2bN7sfceR0Oku9qVObNm305ptv6oYbbigxrSKBW5Lef/99vf/++yXGH/94pRdffFEvvfSS/P395ePjI19fX40fP14BAQHKz8/Xeeedp9TUVA0fPlyDBw9Wfn6+OnTooMzMTF166aUaMGCAe1mZmZnavHmzQkND5XA45OPj4/6b/vHHHxoxYoQWLlx4ynfTLsvQoUM1adKkCv9tyvLnn39q7969+r//+z+P8X5+fmrbtq1+/fVXSVJkZKT++OMPrV27Vn/++aciIyM1Z84czZ49+5T7rl+/vh599FE9+uijJaYtXrxYAwcO1K+//upxE7rJkyfrmWee8fhMR0dHl7qM4h+g2rdvX2Jacfvt27e7j56XpfjHpmP7tNlsmjVrlu655x7deeedCggI0KWXXirp6B36jz1bolhQUJBmz56tK664otR+TvReFhYWauvWrbrkkktKTLvmmmtKjFu8eLFGjRqlc889V7fddpvWrl1b7pH90aNHy9fXV7NmzVJsbKxGjhypV155pcR8//znP7VixQp98803aty4sSS5byh3Kj++AMCZgMANADXUI488ohEjRsjf37/CO7tvvfWWFixYUOJ058cff1y5ubnu4HisO+64Q3v27NGYMWPUq1cvj2lFRUU6fPiwRxi/9dZbdd1112n58uVq1qyZCgoK5OPj4z5VtXhZ6enp2r17t0aNGiVJ+vLLLz3qOffccyt0NPLjjz+u0LpL0nPPPafnnnvOPXzzzTcrPz9fn376qaSjd59OSEjQtdde6z6a+MILLyg8PFxt2rTxOJqYlJTkEa7q1avnfq74zz//rO+++05TpkwpNbicjvJ++DgZWVlZkko/It+wYUNt3bpVktS3b1/961//UocOHdSxY0dFRESocePGCg0N1eHDh085aGVlZenPP/8sMb74FOktW7Z4HCXet29fhZ5PnZWVpblz56pDhw6lBtTiz3fxo+Aq4vjPYUxMjH7++We98cYbGjx4sDZt2iRJCg4Ods9z5513uu+kPnr0aPn7+2vJkiXu6QMHDtSNN95Y6vKPFxcXp7i4uArVmpiYqMGDB6tx48Z68cUXywz5x3v66ae1bNky3Xbbbbr88stLTJ88ebJmzJghSaVOv/jii0uMe/TRRzVlypQK9Q8AtRWBGwBqqNJ2ek9k9erVklTiMUdlXf+9adMm7dmzR76+vlq5cqVeeumlCh1ZDQ8P15AhQyRJf//9t4KCgtzXuB4+fFgtWrTQnj17tG/fPrVs2VJTpkxRz5491bZtW7lcLnd9Jwoiffv21SeffFLuPMOHD9cbb7zhHv7ss88UGBjovk74WA6HQ2eddZaaNWtW6rKGDh2qt99+W9LR61/z8/Pl6+urO+64Q59//rnHfDNnztQbb7yhSZMmqUmTJuXWWBWKw2udOnVKTAsKCtKBAwckSREREUpNTdWGDRvUoUMH3X///RoyZIguuOACZWRkaM6cOSUeiVURc+bM0SOPPFLm9NKeFV9cd3mfwXHjxunvv//W4sWLS/38FI9buXLlCcPoP/7xD7355pulTrPb7brrrrskHf2MS0ePiG/evFn+/v4655xzlJeXJ+nokfgPP/xQgYGB6tu3r1wul8cj8cr7nM+YMaPU676PFR0drf/+97+SpM6dO+vVV19Vt27d1KhRI33yyScKCAjQp59+qpdeeknz5s3z+JFlw4YNGjNmjKKionTttddq48aNCg0NdU8vKCjQqFGjNH/+fF1//fVatmyZPv74Y/ej3NasWaPbb79dS5Ys0Xnnnedud/7555d63TgAnGkI3ABQQxUWFurQoUPy9fWVr6/vaZ9iXJoXX3xRvr6+mj17tu666y598MEHGjRoUIXapqen6/zzz9f+/fuVm5vr3kEfP368nn/+ef3zn/+U0+nU5MmT9eGHH+rss8/WtGnTPJZxoiOaAQEBuuqqqzRv3jxJUv/+/dWmTRv3DdQ6d+5cYqd/xowZSkpKch/h3b17txYuXCiXy6UBAwa451+0aJH7ucWSdPfdd8vf39897HA4PH64OPbvb7PZ9NBDD2no0KH6+eefy72GtqoUn+VQ2t/Y/O8Z5sfOGxMTo7179yovL0+ffPKJ/Pz8NHr0aD344IOnFLizs7MVGBjoDqXFik8pz8jIOOFzzY/35ptv6q233tL48ePLDNNlXfN8KjZt2qRWrVpp//79kuQ+Yn3xxRcrOTlZn376qd5991099NBDOnTokL7++mvFx8eXWE55n/OAgAAFBQVpw4YNko5ec/3ll1/qm2++kSQ98MAD7iPsxUaMGOH+/+Kbxn399deSjh5ZP/bSjuLT5osvfTg2bKempmro0KFat26dpk+frnbt2mnZsmWKjo52h+vi6+TPOeccj8AtyeP7AgBnKgI3ANRQ33//va688krLlr9x40bNmzdPN998s+688069/vrruv/++9W1a9cTHrHNzc1Vx44d9fbbb+u5557TM888I+no6dDHHtkr1qVLF61atarE+BMFbrvdrsDAQHcw8/f3V7169dzDdru9xNH8nJwcdejQwR2QU1NTNXr0aOXl5albt27u+WNjYz0CX7169dx3Ta+I/v37a8uWLad1YzMrNW7cWDabTdu2bSsxbe/evR6nRxebNWuWRo8erSeffFLXXHONbr/9dj333HPav3+/IiIiTqr/PXv2qFGjRu7TrosVB7ht27bpyJEjpbZt2rRpiR9SkpKSNGrUKHXv3l3Tp08vs99TCdxltbnzzjvVsWNHvfjiizp8+LB7XPHZHMfq0qWLXn75Zf35559q2LChx7TyPud2u102m839WQwJCZGvr697uE6dOiU+46VZs2aNoqOjS9xHofgJAqV9TsPDwxUaGqr58+frH//4h7744osT9nOsU7lBHQDUNgRuAKihzj33XL3yyivy8/OTn59fhXa6Fy9erA8//PCE8x08eFCDBg2Sj4+PJk+eLJvNpldffVWXXnqpbr75Zn377bflXrv7+eefKz8/X506dZKPj4/H0d/S6rz22ms1Z84c/frrrx7Xgh4fRA4fPqy5c+e675ju4+Ojzz77zGPH/ueff9Zrr73mHj7+yP/u3bs9fqi49tpr3ddwS0dvplWWk3mklN1uLxFi/vrrL0VFRVV4GVYKCAjQ+eef777MoJgxRklJSR6PRJOO3nU7NTVVkydP1qFDhxQQEOD+8SQvL++kA/f27duVkZHhPvPheOWd7v3bb7953BBt27Zt6tu3r5o0aaIPP/ywQt+Fk1Fa4M7MzFRiYqLuuece2Ww2j8sgSuv/6quvlo+Pj9555x2NHz/eY9rxn/PPP/9c3333nTp37iwfHx8dPHiwRHg9dri0m8Mda9++ffrxxx81dOjQUtdDUqk392vSpMkJb6YIACgfgRsAaqgmTZq4bzhWURs3bjxh4P7777/Vp08frVu3Ti+++KL7ztsXXXSRnnnmGT3wwAMaOHCgFi5cWOqzpiXpww8/VLdu3Sp8dLdTp06qV6+eXnrpJY9rZouPGhbz9fXV3LlzdfjwYbVv317Lly/X1VdfrYSEBElHr+m+4IILNHXqVEnyeLyRdPT02d27d+u7775zH9k7XvFj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p6dr7969FT4tvlevXurVq5fHuOPfr2MfjwcA4BpuAKixih9BdDKKb5B17KnRd955p/bv369rr71WHTp0qPCyoqKiNGfOHD311FPy9/d330Rt+fLl7hsxSVJgYKCmTJmiLVu2qGvXrrr66qslSTNnzlSDBg102WWXuee94YYblJaWVuqNtAoKCkqc0lpQUOA+pbw0drvdfR32Oeeco6efftr9zHEfHx/dd999GjlypD7++GOtWLFCv/32m7777jv9/fffcrlcKiwslI+PjxwOh/vxa8U/dLRu3VrR0dF655133PW++OKLGjdunBISEvTtt98qJSVFK1eu1KFDh3TkyJES4fDGG2885bBdmXx9fS294/2xoqOjNWrUKBljNHz48BLXf7tcLklHf6iRJD8/P/3555+V1n9Fr0M+1vGBe86cOfr00089fpgYP368oqOjddFFF7kfA/fkk0+qa9euuvvuu93zNWvWTD/88IOioqJK3AitOHAXFha6L4coKChwn1JemqCgII97DUjS+++/r8WLF+vuu+/WM888U+LO5N27d9fw4cPVsmVLTZw40eMxYieruO/jawAAHGUzJ/vTMAAA1UTxjc8aN25cJf0fOnSo1MecAZXlwIED+vvvv9W8efOTapeWlqY2bdpYVBUAoKII3AAAAAAAWIC7lAMAAAAAYAECNwAAAAAAFiBwAwAAAABgAQI3AAAAAAAWOCMfC1ZUVKTdu3erXr16JR7JAQAAAACAJBljlJOToyZNmsjH5+SPV5+RgXv37t2Kioqq6jIAAAAAADXAjh071LRp05Nud0YG7nr16kk6+kcLDg6u4moAAAAAANWR0+lUVFSUO0OerDMycBefRh4cHEzgBgAAAACU61QvReamaQAAAAAAWIDADQAAAACABQjcAAAAAABYgMANAAAAAIAFCNwAAAAAAFiAwA0AAAAAgAUI3AAAAAAAWIDADQAAAACABQjcAAAAAABYgMANAAAAAIAFCNwAAAAAAFiAwA0AAAAAgAUI3AAAAAAAWIDADQAAAACABQjcAAAAAABYgMANAAAAAIAFCNwAAAAAAFiAwA0AAAAAgAUI3AAAAAAAWIDADQAAAACABQjcAAAAAABYgMANAAAAAIAFCNwAAAAAAFiAwA0AAAAAgAUI3AAAAAAAWIDADQAAAACABQjcAAAAAABYgMANAAAA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WI4LtgAAAAAAsACBGwAAAAAACxC4AQAAAACwAIEbAAAAAAALELgBAAAAALAAgRsAAAAAAAsQuAEAAAAAsACBGwAAAAAACxC4AQAAAACwAIEbAAAAAAALELgBAAAAALAAgRsAAAAAAAsQuAEAAAAAsACBGwAAAAAAC1SbwL1v3z5FR0dr69atkqSEhATZbLYSr4SEBElS3759Pcb36NGj6ooHAAAAAOA4jqouQDoatnv37u0O25J06623ql+/fu7h3NxcXXTRRerataskKSkpSevXr1fTpk0lSb6+vt4sGQAAAACAclWLwD148GDdeuut+vnnn93j/Pz85Ofn5x6ePXu2+vfvrxYtWmjXrl0yxujCCy+sinIBAAAAADihanFK+euvv66xY8eWOT0/P18vvfSSJk6cKElas2aNCgsL1bRpU9WpU0eDBw9WVlaWt8oFAAAAAOCEqkXgjo6OLnf6woULdemll+qcc86RJG3cuFHt27fXZ599pp9++kkZGRmaMGFCme1dLpecTqfHCwAAlC41NVUxMTEKCwtTXFycjDEnbPPkk08qPDxc/v7+6t+/v3Jycjym//jjj2rdurVVJQMAUC1Vi8B9Iq+++qpGjRrlHp4wYYK++uortW/fXm3bttWzzz6rxYsXl9l+6tSpCgkJcb+ioqK8UTYAADWOy+VSnz591LFjRyUlJSktLc19w9KyvPPOO3rnnXf0xRdfaMOGDUpPT9e0adPc05OTk9W/f3+5XC6LqwcAoHqp9oF78+bN2rx5s6655poy5znrrLO0f//+MjfkEyZMUHZ2tvu1Y8cOq8oFAKBGW7ZsmbKzszVjxgy1aNFC8fHxmjdvXrltduzYoTfffFOdOnVSy5YtNWjQIKWkpEiSDh48qJtuukljxozxRvkAAFQr1T5wv//+++rdu7fHXcgHDRqk1atXu4cTExPVsGFD+fv7l7oMf39/BQcHe7wAAEBJa9euVWxsrIKCgiRJ7dq1U1paWrltHnnkEXXu3Nk9vGnTJrVq1UrS0aeI/Pjjj+6njAAAcCap9oH7iy++0BVXXOExrm3btnrggQe0evVqffTRR5owYYLuueeeqikQAIBaxOl0etxbxWazyW63V/jmpL///ruWLFmikSNHSjr61JHIyEhLagUAoLqrFo8FK8uhQ4f0888/a86cOR7jH374YWVkZOi6665T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nj17tGfPHn333Xd65plnVFRUpDvuuEMul0tz5szRO++8owsuuKAy6wUAAAAAoEaoUOA2xmjTpk0677zzJEk2m02DBw/2mKeoqEiPPvqopk+fLpvNptmzZ2vgwIGVXzEAAAAAADVAhQL3qlWrdPXVV6tNmzbq3r27JKmgoEB5eXlKSUnRt99+qyVLlmj79u0aP368ioqK9PTTT6tPnz5q0qSJpSsAAAAAAEB1VKGbpsXExOibb77RP/7xD23ZskUBAQEKCQlRRESEhgwZom3btumRRx7Rjh079Nxzz2nGjBnq0qWLbrnllgoVsW/fPkVHR2vr1q3ucUuXLlXz5s3lcDjUoUMHpaenu6eNHTtWNpvN/WrZsuXJrTUAAAAAABarUOCuW7euLrnkEv3zn//UE088oeeff16vv/66rrjiCu3bt0+NGzfWkCFDVLduXUlSfn6+pk+frj/++ENz584td9n79u1T7969PcL2li1bNHz4cE2bNk27du3SueeeqxEjRrinJyUl6bPPPlNWVpaysrKUkpJyCqsOAAAAAIB1KnRK+cGDB9WsWTMNHjxYYWFhSktL05IlS5SUlKQ+ffqofv36atu2rQYPHqzRo0crISFBX3zxhSZPnqxzzjmn3GUPHjxYt956q37++Wf3uPT0dE2bNs19hPyee+5Rr169JB193NiGDRvUrVs3d8AHAAAAAKC6sRljTEVm3Lx5s1544QUFBQVp69atioqK0nfffaePP/5Yxhg1b95cXbp00a+//qqAgADNnDlTgwYNOuFyMzIyFB0dLZvNpoyMjFID+quvvqpXXnlFa9euVUpKirp166aGDRtq165d6t69u+bMmaOzzz67wivtdDoVEhKi7OxsBQcHV7gdAABVw+aFPo7ZHbB5ob+K7X4AAFClTjc7VuiU8rVr12rFihWKiYnR3r17tX37dgUFBWnYsGHavHmzJMnf318rV67UK6+8or179yopKalCBURHR5c7vaCgQM8//7xGjRolSUpLS1Pr1q21YMECrVu3Tg6HQyNHjix3GS6XS06n0+MFAAAAAICVKnRKeXJysl588UX5+vrqwIED2rlzp/bs2aP69evrt99+c4duSSosLNSVV16p9957T1deeaVuuOGG0yrwiSeeUJ06ddzXcA8dOlRDhw51T589e7aio6PldDrL/MVh6tSpevLJJ0+r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AAAAVAfVOnAPGzZMGzZs0IABA2S32zVs2DDFx8e7b3oyZMgQxcXFycfHR6tWrarqcgEAAAAAcKtR13Af71RueiKd/nn4AIAzHddwn353VXQNN9eMAwBOwulmx2p9hPtEGjVqpF69elV1GQAAAAAAlFCtb5oGAAAAAEBNReAGAAAAAMACBG4AAAAAACxA4AYAAAAAwAIEbgAAAAAALEDgBgAAAADAAgRuAAAAAAAsQOAGAAAAAMACBG4AQK2QmpqqmJgYhYWFKS4uTsaYE7ZZvHixmjVrpiZNmmjRokXu8cYYhYaGymazuV9TpkyxsnwAAFALEbgBADWey+VSnz591LFjRyUlJSktLU0JCQnltklNTdXQoUM1adIkLV++XI8//rg2bdokSfrjjz8UGhqqrKws9ysuLs4LawIAAGoTAjcAoMZbtmyZsrOzNWPGDLVo0ULx8fGaN29euW3mzp2rK6+8UiNGjFDbtm01ZswYLViwQJL0yy+/qHPnzgoNDXW//P39vbEqqGUq88yLY/33v/9VUFBQZZcLAKhkBG4AQI23du1axcbGugNIu3btlJaWdsI2V111lXu4U6dOSk5OliStWbNGa9asUWhoqM466yw99thjFQpKwLEq+8yLY40aNUqHDh2yqHIAQGUhcAMAajyn06no6Gj3sM1mk91uV1ZWVoXbBAcHa/fu3ZKk33//XX369FFKSooWLlyoV199Ve+99551K4BaqbLPvCi2YMEC7dy508rSAQCVhMANAKjxHA5HiVO+AwIClJeXV+E2x86/bNkyvfjii4qOjlaPHj00duxYLV682JriUWtV9pkXkrR//37FxcVp7ty51hQNAKhUBG4AQI0XHh6uvXv3eozLycmRn59fhduUN/9ZZ52lXbt2VU6xOGNU9pkXkjR+/HgNGjRIXbp0saZoAEClInADAGq8mJgYJSYmuoczMjLkcrkUHh5e4TYpKSmKjIzUoUOH1LZtW4/rYxMTE9WsWTNriketVdlnXnzzzTf6/vvvFR8fb03BAIBKR+AGANR43bp1k9Pp1Pz58yVJ8fHx6tGjh+x2uw4cOKDCwsISbQYMGKB3331X69evV25urmbOnKmePXsqMDBQDRs21L333qukpCS98MILWrhwoe655x5vrxZquMo88yI/P1+jRo3Sa6+9pjp16lhWMwCgchG4AQA1nsPh0Ny5czVmzBjVr19fS5cu1fTp0yVJYWFhWr9+fYk27du31/33369LLrlEkZGRstvtuvfeeyVJb7zxhrZt26bLL79cr732mt599111797dq+uEmq8yz7z4+eeftWXLFg0cOND9qDpJCg0N1erVqy1bBwDA6bGZM/A5J06nUyEhIcrOzlZwcHBVlwMAqCSZmZlKTk5WbGysIiIiKtQmLS1Nu3btUvfu3cs98ujJdupFVtixm2cv92fzQn/Fux/e7MvL/R05ckRNmjTR9OnTNXz4cN11113KzMzUJ598ogMHDqhevXqy2+0eTdeuXavLLrtMiYmJio6OVteuXTVs2DCNHj1amZmZHvNGR0crIyNDjRo1UkBAgPXrBQBnoNPNjgRuAjcA1BLeDKUE7tPvrvYHbkn6+OOPNWTIEAUGBsrHx0erVq1SmzZtZLPZlJKSog4dOpRo/uijj+q5555TQECAWrVqpe+//16BgYEl5rPZbDwfHgAsRuA+BQRuAKiNCNyV1h+Bu/L6kzfPvAAAVLbTzY4OC2oCAACAJNlsaiSp10k2a/O/V4WcecdOAKDG4KZpAAAAAABYgMANAAAAAIAFCNwAAAAAAFiAwA0AAAAAgAUI3AAAAAAAWIDADQCoMTZv3qyUlBQVFhZWdSkAAAAnROAGAFgiNTVVMTExCgsLU1xcnEwFHl20ePFiNWvWTE2aNNGiRYvc44uKijRw4EB169ZN/fr104UXXqi//vrLyvIBAABOG4EbAFDpXC6X+vTpo44dOyopKUlpaWlKSEgot01qaqqGDh2qSZMmafny5Xr88ce1adMmSdJbb72lzMxMbdu2TRkZGWrSpIlmz57thTUBAAA4dQRuAEClW7ZsmbKzszVjxgy1aNFC8fHxmjdvXrlt5s6dqyuvvFIjRoxQ27ZtNWbMGC1YsECS1LBhQ/373/+Wr6+vfHx81L59e+3fv98bqwIAAHDKCNwAgEq3du1axcbGKigoSJLUrl07paWlnbDNVVdd5R7u1KmTkpOTJUnXX3+9OnToIEnaunWrPvjgA/Xr18+S2gEAACoLgRsAUOmcTqeio6PdwzabTXa7XVlZWRVuExwcrN27d3vM8/jjj+vcc89Vr169dPXVV1d+4QAAAJWIwA0AqHQOh0P+/v4e4wICApSXl1fhNqXN/9BDDykhIUHvvfeePvnkk8otGgAAoJIRuAEAlS48PFx79+71GJeTkyM/P78Ktylt/rp16+rWW2/V2LFj9cYbb1Ru0QAAAJWMwA0AqHQxMTFKTEx0D2dkZMjlcik8PLzCbVJSUhQZGSlJevjhh7Vy5Ur3ND8/P9ntdgsqB3C8zZs3KyUlRYWFhVVdCgDUOARuAECl69atm5xOp+bPny9Jio+PV48ePWS323XgwIFSd9wHDBigd999V+vXr1dubq5mzpypnj17SpKioqJ09913KykpSSkpKXrttdc0cOBAr64TUBOkpqYqJiZGYWFhiouLkzHmhG0WL16sZs2aqUmTJlq0aJF7fFFRkQYOHKhu3bqpX79+uvDCC/XXX39ZWT4A1DoEbgBApXM4HJo7d67GjBmj+vXra+nSpZo+fbokKSwsTOvXry/Rpn379rr//vt1ySWXKDIyUna7Xffee68kafTo0erXr5+uu+469e7dWw888IAGDRrk1XUCqjuXy6U+ffqoY8eOSkpKUlpamhISEsptk5qaqqFDh2rSpElavny5Hn/8cW3atEmS9NZbbykzM1Pbtm1TRkaGmjRpotmzZ3thTQCg9rCZivz0Wcs4nU6FhIQoOztbwcHBVV0OANRamZmZSk5OVmxsrCIiIirUJi0tTbt27VL37t3Lvea7JNupFXlSijeZ3uyrCvqzeaG/4t0Pb/ZVy/v76KOPdMcdd2jnzp0KCgrS2rVrNXr0aK1evbrMpuPGjdPGjRv1xRdfSJJeeukl7d27V1OmTNGyZcvUuHFj9yP5xo8fr8OHD+vf//635asEANXF6WbHan+Ee+nSpWrevLkcDoc6dOig9PR0SdLYsWNls9ncr5YtW1ZxpQCA4zVq1Ei9evWqcNiWpDZt2uiaa645ybANYO3atYqNjVVQUJAkqV27dkpLSzthm6uuuso93KlTJyUnJ0uSrr/+enfY3rp1qz744AP169fPktoBoLaq1oF7y5YtGj58uKZNm6Zdu3bp3HPP1YgRIyRJSUlJ+uyzz5SVlaWsrCylpKRUcbUAAE82L7wAFDv+WfY2m012u11ZWVkVbhMcHKzdu3d7zPP444/r3HPPVa9evXT11VdXfuEAUItV68Cdnp6uadOm6ZZbblHDhg11zz33KCUlRUeOHNGGDRvUrVs3hYaGKjQ0VPXq1avqcgEAAKrM8c+yl0p/nn15bUqb/6GHHlJCQoLee+89ffLJJ5VbNADUctU6cPfu3VsjR450D2/atEmtWrXS+vXrVVRUpA4dOigwMFDXXXedtm/fXoWVAgAAVK3jn2Uvlf48+/LalDZ/3bp1deutt2rs2LF64403KrdoAKjlqnXgPlZBQYGef/55jRo1SmlpaWrdurUWLFigdevWyeFweATz47lcLjmdTo8XAABAbXL8s+wzMjLkcrkUHh5e4TYpKSmKjIyUJD388MNauXKle5qfn5/sdrsFlQNA7VVjAvcTTzyhOnXqaMSIERo6dKiSkpLUuXNntWrVSrNnz9ZXX31VZpCeOnWqQkJC3K+oqCgvVw8AAGCtbt26yel0av78+ZKk+Ph49ejRQ3a7XQcOHFBhYWGJNgMGDNC7776r9evXKzc3VzNnzlTPnj0lSVFRUbr77ruVlJSklJQUvfbaaxo4cKBX1wkAaroaEbhXrFihWbNmaeHChfL19S0x/ayzzlJRUZH27NlTavsJEyYoOzvb/dqxY4fVJQNAtZOamqqYmBiFhYUpLi5OFXkq5OLFi9WsWTM1adJEixYtco8vLCzUPffco+DgYAUFBemuu+7SkSNHrCwfwAk4HA7NnTtXY8aMUf369bV06VJNnz5dkhQWFqb169eXaNO+fXvdf//9uuSSSxQZGSm73a57771XkjR69Gj169dP1113nXr37q0HHnhAgwYN8uo6AUBNV+2fw52RkaHY2Fg999xz+r//+z9JUlxcnC666CLdeuutkqSVK1eqR48eysnJcT8Kozw8hxvAmcblcum8885Tz549FRcXp7Fjx+rmm2/W8OHDy2yTmpqqjh07atasWbr00kt100036dNPP1Xr1q319NNP65NPPtEbb7yhgoICXXvttXr66ad11113HbOE2vys6tq8buI53DW5P0mZmZlKTk5WbGxshR/Jl5aWpl27dql79+48kg8AjnG62dFhQU2V5tChQ+rdu7duvPFG9e/fX7m5uZKOPlfyscceU8OGDVVYWKj77rtPt912W4XCNgCciZYtW6bs7GzNmDFDQUFBio+P1+jRo8sN3HPnztWVV17pfhzjmDFjtGDBAk2ZMkX79u3TwoUL1bx5c0lHn9fL4xmB6qFRo0bq1avXSbVp06aN2rRpY1FFAHDmqtanlH/55ZdKS0vT66+/rnr16rlfXbt21aBBgzRgwAANGTJE1113nV5+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",
      "text/plain": [
       "<Figure size 1000x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import akshare as ak\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "from matplotlib.ticker import MaxNLocator\n",
    "\n",
    "# 参数：跌幅阈值\n",
    "drop_threshold = 0.01  # 表示4%\n",
    "n_day_offset = 1  # 偏移2日作为例子\n",
    "n_day_label = n_day_offset + 1  # 计算第n_day_offset+1日\n",
    "\n",
    "# 设置开始时间为2015年1月1日\n",
    "start_date = '2007-01-01'\n",
    "start_date = pd.to_datetime(start_date)\n",
    "\n",
    "# 获取上证指数历史数据\n",
    "index_data = ak.stock_zh_index_daily(symbol=\"sh000001\")\n",
    "index_data['date'] = pd.to_datetime(index_data['date'])\n",
    "\n",
    "# 筛选数据：从开始时间到现在的数据\n",
    "index_data = index_data[index_data['date'] >= start_date]\n",
    "index_data.sort_values('date', inplace=True)\n",
    "index_data.reset_index(drop=True, inplace=True)\n",
    "\n",
    "# 添加每日涨跌幅（单位：百分比）\n",
    "index_data['涨跌幅'] = index_data['close'].pct_change()\n",
    "\n",
    "# 剔除涨幅数据为NaN的行\n",
    "index_data = index_data.dropna(subset=['涨跌幅'])\n",
    "\n",
    "# 添加次日高开/低开 和 涨/跌 标识\n",
    "index_data['次日开盘-当日开盘'] = index_data['open'].shift(-1) - index_data['open']\n",
    "index_data['次日是否高开'] = index_data['次日开盘-当日开盘'].apply(lambda x: '高开' if x > 0 else '低开')\n",
    "\n",
    "index_data['次日收盘-当日收盘'] = index_data['close'].shift(-1) - index_data['close']\n",
    "index_data['次日是否上涨'] = index_data['次日收盘-当日收盘'].apply(lambda x: '上涨' if x > 0 else '下跌')\n",
    "\n",
    "# 添加第n_day_offset + 1日高开/低开 和 涨/跌 标识\n",
    "index_data[f'第{n_day_label}日开盘-当日开盘'] = index_data['open'].shift(-n_day_offset) - index_data['open']\n",
    "index_data[f'第{n_day_label}日是否高开'] = index_data[f'第{n_day_label}日开盘-当日开盘'].apply(lambda x: '高开' if x > 0 else '低开')\n",
    "\n",
    "index_data[f'第{n_day_label}日收盘-当日收盘'] = index_data['close'].shift(-n_day_offset) - index_data['close']\n",
    "index_data[f'第{n_day_label}日是否上涨'] = index_data[f'第{n_day_label}日收盘-当日收盘'].apply(lambda x: '上涨' if x > 0 else '下跌')\n",
    "\n",
    "# 计算第n_day_label日之后的涨幅\n",
    "index_data[f'第{n_day_label}日涨幅'] = index_data['close'].shift(-n_day_offset) / index_data['close'] - 1\n",
    "\n",
    "# 找出跌幅超过阈值的那天，以及其次日、第n_day_label日、第n_day_label日的数据\n",
    "drop_days = index_data[(index_data['涨跌幅'] <= -drop_threshold) if drop_threshold < 0 else (index_data['涨跌幅'] >= drop_threshold) ].copy()\n",
    "\n",
    "# 筛出原始数据中这些次日、第n_day_label日、第n_day_label日对应的表现\n",
    "drop_result = index_data.loc[drop_days.index, [\n",
    "    'date', 'open', 'close', '涨跌幅',\n",
    "    '次日是否高开', '次日是否上涨',\n",
    "    f'第{n_day_label}日是否高开', f'第{n_day_label}日是否上涨',\n",
    "    f'第{n_day_label}日涨幅'\n",
    "]].copy()\n",
    "\n",
    "# 计算涨幅的分布并绘制柱状图\n",
    "drop_result[f'涨幅'] = drop_result[f'第{n_day_label}日涨幅'] * 100  # 转化为百分比\n",
    "\n",
    "# 计算总次数，用于计算概率\n",
    "total_count = len(drop_result)\n",
    "# 计算涨幅大于零的次数\n",
    "positive_count = len(drop_result[drop_result['涨幅'] > 0])\n",
    "\n",
    "# 打印总次数和涨幅大于零的次数和概率\n",
    "positive_probability = positive_count / total_count\n",
    "print(f\"总次数: {total_count}\")\n",
    "print(f\"涨幅大于零的次数: {positive_count}，概率: {positive_probability:.4f}\")\n",
    "\n",
    "# 绘制涨幅分布图（正态分布柱状图）\n",
    "fig, ax = plt.subplots(figsize=(10, 6))  # 设置图形的尺寸\n",
    "n, bins, patches = ax.hist(drop_result['涨幅'], bins=30, rwidth=0.9)\n",
    "\n",
    "# 计算y轴最大值的1.33倍，确保留出1/3的空间\n",
    "max_height = max(n)\n",
    "ax.set_ylim(0, max_height * 1.33)\n",
    "\n",
    "# 设置柱状图上的概率数字与柱状图顶部的间距\n",
    "probability_text_offset = 0.05  # 这个变量控制概率数字距离柱状图顶部的距离\n",
    "\n",
    "# 只对出现次数大于等于1的柱子进行标注\n",
    "for i in range(len(patches)):\n",
    "    # 获取柱状图的高度\n",
    "    height = patches[i].get_height()\n",
    "    # 获取柱状图的中心\n",
    "    x_position = patches[i].get_x() + patches[i].get_width() / 2\n",
    "    # 计算每个柱子对应的概率\n",
    "    if height >= 1:  # 只标注出现次数大于等于1的柱状图\n",
    "        probability = height / total_count\n",
    "        # 在柱子顶部添加文本，稍微调整使其贴近横线\n",
    "        ax.text(x_position, height + probability_text_offset, f'{probability:.2f}', ha='center', va='bottom', fontsize=10)\n",
    "\n",
    "    # 给柱状图着色，按照涨幅大于0、等于0、小于0的情况设置颜色\n",
    "    if height > 0:\n",
    "        if x_position < 0:  # 跨越零的情况\n",
    "            patches[i].set_facecolor('yellow')\n",
    "        else:  # 大于零\n",
    "            patches[i].set_facecolor('red')\n",
    "    elif height < 0:\n",
    "        patches[i].set_facecolor('green')\n",
    "\n",
    "# 设置图表标签\n",
    "ax.set_xlabel(\"涨幅 (%)\", fontsize=12)\n",
    "ax.set_ylabel(\"次数\", fontsize=12)\n",
    "ax.set_title(f\"当天{'跌' if drop_threshold < 0 else '涨'}幅超过 {drop_threshold*100:.1f}% 第{n_day_label}日涨幅分布\", fontsize=14)\n",
    "\n",
    "# 设置y轴为整数\n",
    "ax.yaxis.set_major_locator(MaxNLocator(integer=True))\n",
    "\n",
    "# 调整坐标图的布局，增加顶部和底部留白\n",
    "plt.subplots_adjust(top=0.85, bottom=0.1)\n",
    "\n",
    "# 显示图表\n",
    "plt.tight_layout()\n",
    "plt.show()\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
